<?php

namespace app\common\model\order;
use think\Model;

class ShopOrderModel extends Model
{
    // 表名
    protected $name = 'shop_order';
    // 表主键
    protected $pk = 'id';
    //订单状态：10、撤销  0、待上架  1、待自选 2、待接单  3、待操作 4、待发货  5、待评价 6、评价待审核 7完成 8、审核未通过 9、暂停
    const STATUS = [
        ['value' => 0, 'label' => '待上架','code' => 'o_listing'],
        ['value' => 1, 'label' => '待自选','code' => 'o_select'],
        ['value' => 2, 'label' => '待接单','code' => 'o_taking'],
        ['value' => 3, 'label' => '待操作','code' => 'o_operation'],
        ['value' => 4, 'label' => '待发货','code' => 'o_delivery'],
        ['value' => 5, 'label' => '待评价','code' => 'o_evaluate'],
        ['value' => 6, 'label' => '评价待审核','code' => 'o_auth'],
        ['value' => 7, 'label' => '完成','code' => 'o_success'],
        ['value' => 8, 'label' => '未通过','code' => 'o_auth_error'],
        ['value' => 9, 'label' => '暂停','code' => 'o_stop'],
        ['value' => 10, 'label' => '撤销','code' => 'o_revoke'],
    ];
    /**
     * 查询状态
     * @Author: 易军辉
     * @DateTime:2024-06-07 16:10
     * @param $key 编码或value
     * @param $type 1、查询value  2、查询名称 3、查询编码
     * @return mixed|void
     */
    public static  function getStatus($key,$type=1)
    {
        foreach (self::STATUS as $status) {
            if ($status['code'] == $key || $status['value'] == $key) {
                switch ($type) {
                    case 1:
                        return $status['value']; // 返回value
                    case 2:
                        return $status['label']; // 返回名称
                    case 3:
                        return $status['code']; // 返回code
                    default:
                        return $status['code']; // 未知类型，返回null
                }
            }
        }
    }


    const REFUND_STATUS = [
        ['value' => 0, 'label' => '未返款','code' => 'r_unreturned'],
        ['value' => 1, 'label' => '返款中','code' => 'o_in'],
        ['value' => 2, 'label' => '返款成功','code' => 'o_success'],
        ['value' => 3, 'label' => '返款失败','code' => 'o_error'],
    ];

    /**
     * 查询返款状态
     * @Author: 易军辉
     * @DateTime:2024-07-15 21:03
     * @param $key 编码或value
     * @param $type 1、查询value  2、查询名称 3、查询编码
     * @return mixed|void
     */
    public static  function getRefundStatus($key,$type=1)
    {
        foreach (self::REFUND_STATUS as $status) {
            if ($status['code'] == $key || $status['value'] == $key) {
                switch ($type) {
                    case 1:
                        return $status['value']; // 返回value
                    case 2:
                        return $status['label']; // 返回名称
                    case 3:
                        return $status['code']; // 返回code
                    default:
                        return $status['code']; // 未知类型，返回null
                }
            }
        }
    }


    /**
     * 根据订单状态获取对应的时间状态
     * @Author: 易军辉
     * @DateTime:2024-11-08 17:22
     * @param $key 编码或value
     * @return string|void|null
     */
    public static function getStatusTime($key)
    {
        foreach (self::STATUS as $status) {
            if ($status['code'] == $key || $status['value'] == $key) {
                switch ($status['code']) {
                    case 'o_delivery'://待发货
                        return 'operate_time';//买家操作提交时间
                    case 'o_evaluate'://待评价
                        return 'ship_time';//发货时间
                    case 'o_auth'://评价待审核
                        return 'ship_time';//发货时间
                    case 'o_success'://完成
                        return 'success_time';//订单完成时间
                    default:
                        return 'create_time'; //默认创建时间
                }
            }
        }
    }
}
